home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / digsby / accounts / account.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  4KB  |  124 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. from pyxmpp.utils import from_utf8
  5. from pyxmpp.iq import Iq
  6. from pyxmpp.objects import StanzaPayloadObject
  7. from pyxmpp.utils import to_utf8
  8. from pyxmpp.xmlextra import common_doc
  9. from pyxmpp.xmlextra import get_node_ns_uri
  10. import base64
  11. import cPickle
  12. import binascii
  13. import digsby.accounts as digsby
  14. import digsbyprofile
  15. import common
  16. from digsby.accounts import DIGSBY_ACCOUNTS_NS
  17. import libxml2
  18.  
  19. def fix_truncated(short):
  20.     fix_shortname = fix_shortname
  21.     import common.protocolmeta
  22.     return fix_shortname.get(short, short)
  23.  
  24.  
  25. class Account(StanzaPayloadObject, common.HashedAccount):
  26.     xml_element_name = 'account'
  27.     xml_element_namespace = DIGSBY_ACCOUNTS_NS
  28.     
  29.     def __init__(self, xmlnode_or_acct_or_id = None, protocol = None, username = None, password = None, data = None, action = None):
  30.         if isinstance(xmlnode_or_acct_or_id, libxml2.xmlNode):
  31.             self._Account__from_xml(xmlnode_or_acct_or_id)
  32.         elif isinstance(xmlnode_or_acct_or_id, common.AccountBase):
  33.             acct = xmlnode_or_acct_or_id
  34.             self.id = acct.id
  35.             self.protocol = acct.protocol
  36.             self.username = acct.name
  37.             self.password = acct.password
  38.             
  39.             try:
  40.                 self.data = cPickle.dumps(acct.get_options())
  41.             except:
  42.                 print 'acct.get_options()', repr(acct.get_options())
  43.                 raise 
  44.  
  45.             self.action = action
  46.         else:
  47.             self.id = xmlnode_or_acct_or_id
  48.             self.protocol = protocol
  49.             self.username = username
  50.             self.password = password
  51.             self.data = data
  52.             self.action = action
  53.         if not isinstance(self.id, int) or not (self.id >= 0):
  54.             raise ValueError('positive int id is required! (got %r)' % self.id)
  55.         
  56.  
  57.     
  58.     def __repr__(self):
  59.         return '<Digsby.Account %s (%s)>' % (self.protocol, self.username)
  60.  
  61.     
  62.     def __from_xml(self, node):
  63.         if node.type != 'element':
  64.             raise ValueError, 'XML node is not an account element (not en element)'
  65.         
  66.         ns = get_node_ns_uri(node)
  67.         if ns or ns != DIGSBY_ACCOUNTS_NS or node.name != 'account':
  68.             raise ValueError, 'XML node is not an account element'
  69.         
  70.         id = node.prop('id')
  71.         self.id = None if id else None
  72.         username = node.prop('username')
  73.         self.username = None if username else None
  74.         protocol = node.prop('protocol')
  75.         self.protocol = None if protocol else None
  76.         self.protocol = fix_truncated(self.protocol)
  77.         password = node.prop('password')
  78.         self.password = None if password else None
  79.         action = node.prop('action')
  80.         self.action = None if action else None
  81.         self.data = None
  82.         n = node.children
  83.         while n:
  84.             if n.type != 'element':
  85.                 n = n.next
  86.                 continue
  87.             
  88.             ns = get_node_ns_uri(n)
  89.             if ns and ns != DIGSBY_ACCOUNTS_NS:
  90.                 n = n.next
  91.                 continue
  92.             
  93.             if n.name == 'data':
  94.                 self.data = base64.decodestring(n.getContent())
  95.             
  96.             n = n.next
  97.  
  98.     
  99.     def complete_xml_element(self, xmlnode, _unused):
  100.         if isinstance(self.id, int) and self.id >= 0:
  101.             xmlnode.setProp('id', to_utf8(str(self.id)))
  102.         else:
  103.             raise ValueError, 'self.id must be int'
  104.         None if self.protocol else None
  105.         None if self.username else None
  106.         None if self.password else None
  107.         None if self.action else None
  108.         None if self.data is not None else None
  109.  
  110.     
  111.     def make_push(self, digsby_protocol):
  112.         return digsby.accounts.Accounts([
  113.             self]).make_push(digsby_protocol)
  114.  
  115.     
  116.     def __str__(self):
  117.         n = self.as_xml(doc = common_doc)
  118.         r = n.serialize()
  119.         n.unlinkNode()
  120.         n.freeNode()
  121.         return r
  122.  
  123.  
  124.